package com.pe.pgn.clubpgn.dao.impl;

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.lang.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import com.pe.pgn.clubpgn.common.CLPConstantes;
import com.pe.pgn.clubpgn.dao.FlotaVehiculoDao;
import com.pe.pgn.clubpgn.dao.hibernate.GenericDaoHibernate;
import com.pe.pgn.clubpgn.domain.ClprFlotaVehiculo;
import com.pe.pgn.clubpgn.webapp.util.ValidationUtil;

@Repository("flotaVehiculoDao")
public class FlotaVehiculoDaoImpl extends GenericDaoHibernate<ClprFlotaVehiculo, Long> 
	implements FlotaVehiculoDao{

	public FlotaVehiculoDaoImpl() {
		super(ClprFlotaVehiculo.class);
	}

	private JdbcTemplate jdbcTemplate;
	
	@Autowired
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}	
	
	public int eliminarFlotaVehiculo(Long id) {
		
		Long coTarjetaEmpresa = null;
		StringBuffer sql = new StringBuffer();
		sql.append(" select co_tarjeta_empresa ");
		sql.append(" from clpr_flota_vehiculo ");
		sql.append(" where id = ").append(id);
		coTarjetaEmpresa = jdbcTemplate.queryForLong(sql.toString());		
		
		sql = new StringBuffer();
		sql.append(" update clpr_flota_vehiculo set  ");
		sql.append(" st_flota_vehiculo = '").append(CLPConstantes.ST_FALSO).append("' ,");
		sql.append(" co_usuario_modificador = '").append(getUsuarioLogueado().getUsername()).append("' ,");
		sql.append(" da_fecha_modificacion = sysdate");		
		sql.append(" where id = ").append(id);
			
		int resultado = jdbcTemplate.update(sql.toString());
		int resultadoObservaciones = 0;
		
		if (resultado > 0){
			
			 StringBuffer sqlTarjeta = new StringBuffer();
			 sqlTarjeta.append(" update clpb_tarjeta_empresa set ");
			 sqlTarjeta.append(" co_flota_vehiculo =" + id).append(" ,");
			 sqlTarjeta.append(" st_tarjeta_empresa = '").append(CLPConstantes.ST_FALSO).append("' ,");
			 sqlTarjeta.append(" co_usuario_modificador ='" +  getUsuarioLogueado().getUsername()).append(" ' ,");
			 sqlTarjeta.append(" da_fecha_modificacion = sysdate, ");
			 sqlTarjeta.append(" da_fecha_anulacion = sysdate ");
			 sqlTarjeta.append(" where id = ").append(coTarjetaEmpresa);			
			 resultadoObservaciones = jdbcTemplate.update(sqlTarjeta.toString());
		}
		
		if(resultadoObservaciones > 0){
			getHibernateTemplate().flush();	
			return resultado;		 
		}else{
			return 0;
		}
	}

	public int guardarFlotaVehiculo(Long id, Long coFlota, String dePlaca,
			Long idTarjetaEmpresa, String deObservaciones) {
		
		StringBuffer sql = new StringBuffer();
		Long sequencia = null;
		Long idFlotaVehiculo = new Long(0);
		int resultado = 0;
		
		dePlaca = dePlaca.toUpperCase();
		
		if (deObservaciones == null){
			deObservaciones = "";
		}
		
		if (id < 0){		
			
			sql.append("select seq_flota_vehiculo.nextval from dual");
			sequencia = jdbcTemplate.queryForLong(sql.toString());
			idFlotaVehiculo = sequencia;

			sql = new StringBuffer();
			sql.append(" insert into clpr_flota_vehiculo (id, co_flota,de_placa,co_tarjeta_empresa,da_fecha_inscripcion ,st_flota_vehiculo,co_usuario_creador,da_fecha_creacion)  ");
			sql.append(" values("+sequencia+ "," + coFlota +",'"+dePlaca.trim()+"',"+idTarjetaEmpresa+",sysdate,'" + CLPConstantes.ST_VERDADERO+"','" + getUsuarioLogueado().getUsername()+ "',sysdate )");	
			resultado = jdbcTemplate.update(sql.toString());
			
			sql = new StringBuffer();
			sql.append(" update clpb_tarjeta_empresa set ");
			sql.append(" co_usuario_modificador = '"+getUsuarioLogueado().getUsername()).append("',");
			sql.append(" da_fecha_modificacion = sysdate, ");
			sql.append(" de_observaciones ='" + deObservaciones).append("' ,");
			sql.append(" co_flota_vehiculo =" + idFlotaVehiculo).append(" ,");
			sql.append(" da_fecha_asignacion = sysdate ");
			sql.append(" where id = ").append(idTarjetaEmpresa);		
			jdbcTemplate.update(sql.toString());
			
		} else {
			
			idFlotaVehiculo = id;
			//frk: verificando si cambio su tarjeta, si es asi anulamos la anterior
			sql = new StringBuffer();
			sql.append(" select co_tarjeta_empresa ");
			sql.append(" from clpr_flota_vehiculo ");
			sql.append(" where id = ").append(id);
			
			Map<String, Object> map = jdbcTemplate.queryForMap(sql.toString());
			if(map.get("co_tarjeta_empresa")!= null){
				String idTarjetaInicial = map.get("co_tarjeta_empresa").toString();
				if(!idTarjetaInicial.equals(idTarjetaEmpresa.toString())){
					
					sql = new StringBuffer();
					sql.append(" update clpb_tarjeta_empresa set ");
					sql.append(" st_tarjeta_empresa = '").append(CLPConstantes.ST_FALSO).append("',");
					sql.append(" co_usuario_modificador = '"+getUsuarioLogueado().getUsername()).append("',");
					sql.append(" da_fecha_modificacion = sysdate, ");					
					sql.append(" da_fecha_anulacion = sysdate ");
					sql.append(" where id = ").append(idTarjetaInicial);		
					jdbcTemplate.update(sql.toString());
				}

				sql = new StringBuffer();
				sql.append(" update clpb_tarjeta_empresa set ");
				sql.append(" co_usuario_modificador = '"+getUsuarioLogueado().getUsername()).append("',");
				sql.append(" da_fecha_modificacion = sysdate, ");
				sql.append(" de_observaciones ='" + deObservaciones).append("' ,");
				sql.append(" co_flota_vehiculo =" + id).append(" ,");
				sql.append(" da_fecha_asignacion = sysdate ");
				sql.append(" where id = ").append(idTarjetaEmpresa);		
				jdbcTemplate.update(sql.toString());
			}			
			
			sql = new StringBuffer();
			sql.append(" update clpr_flota_vehiculo set ");
			sql.append(" de_placa = '" + dePlaca).append("', ");
			sql.append(" co_tarjeta_empresa = " + idTarjetaEmpresa).append(", ");
			sql.append(" co_usuario_modificador = '" +  getUsuarioLogueado().getUsername()).append("' ,");
			sql.append(" da_fecha_modificacion = sysdate ");
			sql.append(" where id = ").append(id);		
			resultado = jdbcTemplate.update(sql.toString());
		}	

		getHibernateTemplate().flush();	
		return resultado;
	}

	public int eliminarFlotaCargaVehiculo(Long coFlota, String dePlaca,
			Long coTarjetaEmpresa,String deObservaciones) {
		
		StringBuffer sql = new StringBuffer();
		Long idFlotaVehiculo = null;
		sql.append(" select id from  clpr_flota_vehiculo where   ");
		sql.append(" co_flota = ").append(coFlota);
		sql.append(" and de_placa = '").append(dePlaca).append("' ");
		sql.append(" and co_tarjeta_empresa = ").append(coTarjetaEmpresa).append(" ");
		idFlotaVehiculo = jdbcTemplate.queryForLong(sql.toString());
		
		System.out.println(sql.toString());
	
		
		sql = new StringBuffer();
	
		sql.append(" update clpr_flota_vehiculo set  ");
		sql.append(" st_flota_vehiculo = '").append(CLPConstantes.ST_FALSO).append("' ,");
		sql.append(" co_usuario_modificador = '").append(getUsuarioLogueado().getUsername()).append("' ,");
		sql.append(" da_fecha_modificacion = sysdate");		
		sql.append(" where id = ").append(idFlotaVehiculo);
		
		System.out.println(sql.toString());
		int resultado = jdbcTemplate.update(sql.toString());
		int resultadoObservaciones = 0;
		
		if (resultado>0){
			
			 StringBuffer sqlTarjeta = new StringBuffer();
			 sqlTarjeta.append(" update clpb_tarjeta_empresa set ");
			 sqlTarjeta.append(" co_flota_vehiculo =" + idFlotaVehiculo).append(" ,");
			 sqlTarjeta.append(" de_observaciones ='" + deObservaciones).append("' ,");
			 sqlTarjeta.append(" st_tarjeta_empresa = '").append(CLPConstantes.ST_FALSO).append("' ,");
			 sqlTarjeta.append(" co_usuario_modificador ='" +  getUsuarioLogueado().getUsername()).append(" ' ,");
			 sqlTarjeta.append(" da_fecha_modificacion = sysdate, ");
			 sqlTarjeta.append(" da_fecha_anulacion = sysdate ");
			 sqlTarjeta.append(" where id = ").append(coTarjetaEmpresa);			
			 resultadoObservaciones = jdbcTemplate.update(sqlTarjeta.toString());
		}
		 
		 if (resultadoObservaciones>0){
				getHibernateTemplate().flush();	
				return resultado;
			 
		 } else {
			 	return 0;
		 }		
	}
	
	
	public int guardarFlotaVehiculo(ClprFlotaVehiculo flotaVehiculo) {
		if(flotaVehiculo.getId() != null){
			flotaVehiculo.setStFlotaVehiculo(Boolean.TRUE);
			flotaVehiculo.setCoUsuarioCreador(getUsuarioLogueado().getUsername());
			flotaVehiculo.setDaFechaCreacion(Calendar.getInstance());
		}
		else{
			
			flotaVehiculo.setCoUsuarioModificador(getUsuarioLogueado().getUsername());
			flotaVehiculo.setDaFechaModificacion(Calendar.getInstance());
			flotaVehiculo.setStFlotaVehiculo(Boolean.TRUE);
		}				
		getHibernateTemplate().saveOrUpdate(flotaVehiculo);
		getHibernateTemplate().flush();
		return 1; 
	}

	@SuppressWarnings("unchecked")
	public ClprFlotaVehiculo obtenerFlotaVehiculo(Long id) {
		StringBuffer query = new StringBuffer();
		query.append("select fv.id as id, ");
		query.append("		fv.co_flota as coFlota, ");
		query.append("		fv.de_placa as dePlaca, ");
		query.append("		te.id as idTarjetaEmpresa, ");
		query.append("		te.co_codigo_tarjeta_empresa as deTarjetaEmpresa, ");
		query.append(" 		to_char(fv.da_fecha_inscripcion,'"+CLPConstantes.DATE_PATTERN+"') as fechaInscripcion ,  ");
		query.append(" 		te.da_observaciones as deObservaciones ");
		query.append("	from clpr_flota_vehiculo fv ");
		query.append("	join clpb_tarjeta_empresa te on te.id = fv.co_tarjeta_empresa ");
		query.append("	where 1 = 1 ");		
		query.append("	and fv.id =  ").append(id);
		List<ClprFlotaVehiculo> listaFV= findListOfBeans(query.toString(), null, ClprFlotaVehiculo.class);		
		if (!listaFV.isEmpty()){
			return listaFV.get(0);
		} 
		return null;
	}

	@SuppressWarnings("unchecked")
	public List<ClprFlotaVehiculo> obtenerFlotaVehiculos(Long idFlota) {
		StringBuffer query = new StringBuffer();
		query.append("select fv.id as id, ");
		query.append("		fv.co_flota as coFlota, ");
		query.append("		fv.de_placa as dePlaca, ");
		query.append(" 		te.de_observaciones as deObservaciones ,");
		query.append("		te.co_codigo_tarjeta_empresa as deTarjetaEmpresa, ");
		query.append(" 		to_char(fv.da_fecha_inscripcion,'"+CLPConstantes.DATE_PATTERN+"') as fechaInscripcion ");
		query.append("	from clpr_flota_vehiculo fv ");
		query.append("	join clpb_tarjeta_empresa te on te.id = fv.co_tarjeta_empresa ");
		query.append("	where 1 = 1 ");		
		query.append("	and fv.co_flota =  ").append(idFlota);
		query.append("	and fv.st_flota_vehiculo =  '").append(CLPConstantes.ST_VERDADERO).append("'");
		query.append(" order by fv.id desc ");
		
		System.out.println(query.toString());
		List<ClprFlotaVehiculo> listaFV= findListOfBeans(query.toString(), null, ClprFlotaVehiculo.class);		
		if (!listaFV.isEmpty()){
			return listaFV;
		} 
		return null;
	}

	@SuppressWarnings("unchecked")
	public List<ClprFlotaVehiculo> obtenerFlotaVehiculosPlaca(String cadenaDePlaca){
		
		StringBuffer query = new StringBuffer();
		query.append("select fv.id as id, ");
		query.append("		fv.co_flota as coFlota, ");
		query.append("		fv.de_placa as dePlaca, ");
		query.append(" 		te.de_observaciones as deObservaciones ,");
		query.append("		te.co_codigo_tarjeta_empresa as deTarjetaEmpresa, ");
		query.append(" 		to_char(fv.da_fecha_inscripcion,'"+CLPConstantes.DATE_PATTERN+"') as fechaInscripcion ");
		query.append("	from clpr_flota_vehiculo fv ");
		query.append("	join clpb_tarjeta_empresa te on te.id = fv.co_tarjeta_empresa ");
		query.append("	where 1 = 1 ");		
		//query.append("	and fv.st_flota_vehiculo =  '").append(CLPConstantes.ST_VERDADERO).append("'");
		query.append("	and fv.de_placa in (").append(cadenaDePlaca).append(")");
		
		System.out.println(query.toString());
		List<ClprFlotaVehiculo> listaFV = findListOfBeans(query.toString(), null, ClprFlotaVehiculo.class);		
		if (!listaFV.isEmpty()){
			return listaFV;
		}
		
		return null;
	}	
	
	@SuppressWarnings("unchecked")
	public List<ClprFlotaVehiculo> obtenerFlotaVehiculosTarjeta(String cadenaDeTarjeta) {
		StringBuffer query = new StringBuffer();
		query.append("select fv.id as id, ");
		query.append("		fv.co_flota as coFlota, ");
		query.append("		fv.de_placa as dePlaca, ");
		query.append(" 		te.de_observaciones as deObservaciones ,");
		query.append("		te.co_codigo_tarjeta_empresa as deTarjetaEmpresa, ");
		query.append(" 		to_char(fv.da_fecha_inscripcion,'"+CLPConstantes.DATE_PATTERN+"') as fechaInscripcion ");
		query.append("	from clpr_flota_vehiculo fv ");
		query.append("	join clpb_tarjeta_empresa te on te.id = fv.co_tarjeta_empresa ");
		query.append("	where 1 = 1 ");		
		query.append("	and fv.st_flota_vehiculo =  '").append(CLPConstantes.ST_VERDADERO).append("'");
		query.append("	and te.co_codigo_tarjeta_empresa in (").append(cadenaDeTarjeta).append(")");
		
		System.out.println(query.toString());
		List<ClprFlotaVehiculo> listaFV= findListOfBeans(query.toString(), null, ClprFlotaVehiculo.class);		
		if (!listaFV.isEmpty()){
			return listaFV;
		} 
		return null;
	}	
	
	@SuppressWarnings("unchecked")
	public List<ClprFlotaVehiculo> obtenerFlotaVehiculosAlias(String cadenaDeAlias) {
		StringBuffer query = new StringBuffer();
		query.append("select fv.id as id, ");
		query.append("		fv.co_flota as coFlota, ");
		query.append("		fv.de_placa as dePlaca, ");
		query.append(" 		te.de_observaciones as deObservaciones ,");
		query.append("		te.co_codigo_tarjeta_empresa as deTarjetaEmpresa, ");
		query.append(" 		to_char(fv.da_fecha_inscripcion,'"+CLPConstantes.DATE_PATTERN+"') as fechaInscripcion ");
		query.append("	from clpr_flota_vehiculo fv ");
		query.append("	join clpb_tarjeta_empresa te on te.id = fv.co_tarjeta_empresa ");
		query.append("	join clpd_flota fl on fl.id = fv.co_flota ");
		query.append("	where 1 = 1 ");		
		query.append("	and fv.st_flota_vehiculo =  '").append(CLPConstantes.ST_VERDADERO).append("'");
		query.append("	and fl.de_flota_area in (").append(cadenaDeAlias).append(")");
		
		System.out.println(query.toString());
		List<ClprFlotaVehiculo> listaFV= findListOfBeans(query.toString(), null, ClprFlotaVehiculo.class);		
		if (!listaFV.isEmpty()){
			return listaFV;
		} 
		return null;
	}

	public Long validaVehiculoFlota(String dePlaca,
			Long idFlotaVehiculo) {
		StringBuffer sql = new StringBuffer();
		Long resultado = null;
		
			sql.append(" select count(id) from clpr_flota_vehiculo ");
			sql.append(" where trim( upper(de_placa)) =trim( upper('").append(dePlaca).append("')) ");
			sql.append(" and st_flota_vehiculo = '").append(CLPConstantes.ST_VERDADERO).append("'");
			
			if (idFlotaVehiculo>0){
				sql.append(" and id <>").append(idFlotaVehiculo);
			} 
			System.out.println(sql.toString());
			
			resultado = jdbcTemplate.queryForLong(sql.toString());
		return resultado;
	}

	@SuppressWarnings("unchecked")
	public Map<String, ClprFlotaVehiculo> obtenerMapFlotaVehiculosPlaca(String cadenaPlacas){

		StringBuffer query = new StringBuffer();
		query.append("  select fv.id as id, ");
		query.append("	 	fv.co_flota as coFlota, ");
		query.append(" 		f.de_flota_area as deFlota, ");
		query.append("	 	fv.de_placa as dePlaca, ");
		query.append(" 	 	te.de_observaciones as deObservaciones ,");
		query.append("	 	te.co_codigo_tarjeta_empresa as deTarjetaEmpresa, ");
		query.append(" 	 	to_char(fv.da_fecha_inscripcion,'"+CLPConstantes.DATE_PATTERN+"') as fechaInscripcion ");
		query.append("	from clpr_flota_vehiculo fv join clpb_tarjeta_empresa te on te.id = fv.co_tarjeta_empresa ");
		query.append("					join clpd_flota f on fv.co_flota = f.id ");
		query.append("		where upper(trim(fv.de_placa)) in (").append(cadenaPlacas.toUpperCase()).append(")");
		query.append("			and fv.st_flota_vehiculo = '").append(CLPConstantes.ST_VERDADERO).append("'");
		
		Map<String, ClprFlotaVehiculo> map = new HashMap<String, ClprFlotaVehiculo>();
		List<ClprFlotaVehiculo> listaFV = findListOfBeans(query.toString(), null, ClprFlotaVehiculo.class);
		
		if (!listaFV.isEmpty()){
			
			for (ClprFlotaVehiculo clprFlotaVehiculo : listaFV) {
				map.put(clprFlotaVehiculo.getDePlaca().toLowerCase(), clprFlotaVehiculo);
			}			
		}
		
		return map;
	}

	@SuppressWarnings("unchecked")
	public void guardarFlotasVehiculos(Long coFlota,
		List dataSheet){

		StringBuffer sql = new StringBuffer();
		Long idFlotaVehiculo = new Long(0);
		
		String placa = "";
		String tarjeta = "";
		String observaciones = "";
		String concatTarjeta = "";
		
		for (int indice = 0; indice < dataSheet.size(); indice++){
			
			List placaList = (List)dataSheet.get(indice);
			tarjeta = placaList.get(1) == null ? "" : placaList.get(1).toString().trim();
			
			if(NumberUtils.isNumber(tarjeta)){
				BigDecimal numero = new BigDecimal(tarjeta);
				numero = numero.setScale (0, BigDecimal.ROUND_HALF_UP);
				tarjeta = numero.toString();					
			}
			
			if(!"".equals(tarjeta))
			concatTarjeta += "'"+tarjeta+"',";
		}	
		
		if(concatTarjeta.length() > 0){
			concatTarjeta = concatTarjeta.substring(0, concatTarjeta.length()-1);
		}else{
			concatTarjeta = "'-1'";
		}
		
		//////////////////////////////////////////////////////////
		
		int indInsert = 0;
		int indUpdate = 0;
		String[] arrayInsert = new String[dataSheet.size()];
		String[] arrayUpdate = new String[dataSheet.size()];
		
		Map mapTarjetas = obtenetIdsTarjetaEmpresa(concatTarjeta);
		for (int indice = 0; indice < dataSheet.size(); indice++){
			
			List placaList = (List)dataSheet.get(indice);
			placa   = placaList.get(0) == null ? "" : placaList.get(0).toString().trim().toUpperCase();
			tarjeta = placaList.get(1) == null ? "" : placaList.get(1).toString().trim();
			observaciones = placaList.get(3) == null ? "" : placaList.get(3).toString().trim();					
			
			if(NumberUtils.isNumber(tarjeta)){
				BigDecimal numero = new BigDecimal(tarjeta);
				numero = numero.setScale (0, BigDecimal.ROUND_HALF_UP);
				tarjeta = numero.toString();					
			}
			
			if(!"".equals(placa) && !"".equals(tarjeta)){
			
				sql = new StringBuffer();
				sql.append("select seq_flota_vehiculo.nextval from dual");
				idFlotaVehiculo = jdbcTemplate.queryForLong(sql.toString());
	
				sql = new StringBuffer();
				sql.append(" insert into clpr_flota_vehiculo (id, co_flota,de_placa,co_tarjeta_empresa,da_fecha_inscripcion ,st_flota_vehiculo,co_usuario_creador,da_fecha_creacion)  ");
				sql.append(" values("+idFlotaVehiculo+ "," + coFlota +",'"+placa+"',"+mapTarjetas.get(tarjeta)+",sysdate,'" + CLPConstantes.ST_VERDADERO+"','" + getUsuarioLogueado().getUsername()+ "',sysdate )");	

				arrayInsert[indInsert] = sql.toString();
				indInsert++;
				
				sql = new StringBuffer();
				sql.append(" update clpb_tarjeta_empresa set ");
				sql.append(" co_usuario_modificador = '"+getUsuarioLogueado().getUsername()).append("',");
				sql.append(" da_fecha_modificacion = sysdate, ");
				sql.append(" de_observaciones ='" + observaciones).append("' ,");
				sql.append(" co_flota_vehiculo =" + idFlotaVehiculo).append(" ,");
				sql.append(" da_fecha_asignacion = sysdate ");
				sql.append(" where id = ").append(mapTarjetas.get(tarjeta));		
				
				arrayUpdate[indUpdate] = sql.toString();
				indUpdate++;
				
			}else{
				
				arrayInsert[indInsert] = ValidationUtil.getQueryDefault();
				indInsert++;
				
				arrayUpdate[indUpdate] = ValidationUtil.getQueryDefault();
				indUpdate++;
			}
		}
		
		if(arrayInsert.length > 0)
		jdbcTemplate.batchUpdate(arrayInsert);
		
		if(arrayUpdate.length > 0)
		jdbcTemplate.batchUpdate(arrayUpdate);
		
		for (int i = 0; i < arrayInsert.length; i++) {
			System.out.println(i+"* guardarFlotasVehiculos(): "+arrayInsert[i]);
		}
		
		for (int i = 0; i < arrayUpdate.length; i++) {
			System.out.println(i+"* guardarFlotasVehiculos(): "+arrayUpdate[i]);
		}
	}
	
	@SuppressWarnings("unchecked")
	public Map obtenetIdsTarjetaEmpresa(String concatCodigoTarjetaEmpresa) {
		
		StringBuffer query = new StringBuffer();
		Map mapFinal = new HashMap();
		
		query.append(" select id,trim(co_codigo_tarjeta_empresa) as co_codigo_tarjeta_empresa  ");	
		query.append(" from clpb_tarjeta_empresa ");
		query.append(" where trim(co_codigo_tarjeta_empresa) in ("+concatCodigoTarjetaEmpresa+")");
		query.append(" and st_tarjeta_empresa = '"+CLPConstantes.ST_VERDADERO+"'  ");
	
		System.out.println("* obtenetIdsTarjetaEmpresa : "+query.toString());
		List<Map<String,Object>> list = jdbcTemplate.queryForList(query.toString());
		if(!list.isEmpty()){
			
			for (int i = 0; i < list.size(); i++) {
				
				Map<String,Object> map = list.get(i);
				mapFinal.put(map.get("co_codigo_tarjeta_empresa").toString(), 
				map.get("id").toString());
			}
		}
		
		return mapFinal;
	}
}
